<?php
/**
 * Created by Veyron
 * User: Vy
 * motto:现在的拼搏 为了更好的明天
 * day:  2020/1/14
 * Time: 15:44
 */
namespace app\admin\controller;

use app\common\business\Category as CategoryBus;
use app\common\lib\Arr;
use app\common\lib\StatusLib;

class Category extends AdminBase {
    /**
     * 分类页
     * @return \think\response\View
     */
    public function index(){
        $pid = input('param.pid',0,'intval');
        $data = [
            'pid' => $pid
        ];

        try {
            $categoryBus = new CategoryBus();
            //获取 全部上级分类
            $pids = $categoryBus->getAllUpPids($pid);

            $categorys = $categoryBus->getLists($data,config('admin.adminCategoryPageSize'));
        }catch (\Exception $e){
            $categorys = Arr::getPaginateDefaultData(config('admin.adminCategoryPageSize'));
            $pids = [];
        }

        return view('',compact('categorys','pid','pids'));
    }

    /**
     * 添加分类-页面
     * @return \think\response\View
     */
    public function add(){
        $categorys = (new CategoryBus())->getNormalCategorys();

        return view("",[
            'categorys' => json_encode($categorys),
        ]);
    }

    /**
     * 添加分类-保存到数据库
     */
    public function save(){
        $pid  = input('param.pid',0,'intval');
        $name = input('param.name','','trim');
        //参数效验
        $data = [
            'pid'  => $pid,
            'name' => $name,
        ];
        $validate = new \app\admin\validate\Category();
        if(!$validate->scene('save')->check($data)){
            return show(config('status.error'), $validate->getError());
        }
        try {
            $result = (new CategoryBus())->add($data);
        }catch (\Exception $e){
            return show(config('status.error'), '添加失败');
        }
        return show(config('status.success'),'ok');
    }

//    /**
//     * 分类排序（改到了 AdminBase->status中）
//     * @return \think\response\Json
//     */
//    public function listorder(){
//        $obj = new CategoryBus();
//        return $this->ChangeStatus($obj,'listorder');
//    }
//
//    /**
//     * 修改装状态（改到了 AdminBase->status中）
//     * @return \think\response\Json
//     */
//    public function status(){
//        $obj = new CategoryBus();
//       return $this->ChangeStatus($obj);
//    }

    /**
     * 分类编辑——页面
     */
    public function edit(){
        $id  = input('param.id',0,'intval');
        if(!$id){
            return show(config('status.error'), 'id不能为空');
        }

        $category = (new CategoryBus())->getById($id);
        if(!$category || $category['status'] == config('status.mysql.table_delete')){
            return show(config('status.error'), '该分类不存在');
        }

        return view('',compact('category'));
    }
    /**
     * 编辑分类-修改分类名
     */
    public function update(){
        $id   = input('param.id',0,'intval');
        $pid  = input('param.pid',0,'intval');
        $name = input('param.name','','trim');

        //参数效验
        $data = [
            'id'   => $id,
            'pid'  => $pid,
            'name' => $name,
        ];
        $validate = new \app\admin\validate\Category();
        if(!$validate->scene('edit')->check($data)){
            return show(config('status.error'), $validate->getError());
        }

        try {
            array_shift($data);
            $result = (new CategoryBus())->update($id,$data);
        }catch (\Exception $e){
            return show(config('status.error'), '编辑失败'.$e->getMessage());
        }
        return show(config('status.success'),'ok');
    }

    /**
     * 商品添加页——分类选择框（一级分类）
     * @return \think\response\View
     */
    public function dialog(){
        //获取正常的一级分类
        $categorys = (new CategoryBus())->getNormalByPid();

        return view('',[
            'categorys' => json_encode($categorys)
        ]);
    }

    /**
     * 商品添加页——分类选择框（二、三级分类）
     * @return \think\response\Json
     */
    public function getByPid(){
        $pid = input('param.pid',0,'intval');
        $categorys = (new CategoryBus())->getNormalByPid($pid);

        return show('status.success','OK',$categorys);
    }
}
